﻿using System.Collections.Generic;
using System.IO;

namespace Flexible.Interfaces
{
    public interface IPlugin
    {
        IPluginSignature Signature { get; }

        void Enable(IPluginActivateContext context);
        void Disable(IPluginActivateContext context);

        IEnumerable<IUserCommand> Commands { get; }

        void InsterestedPluginEnabled(string id, IPlugin plugin);
        void InsterestedPluginDisabling(string id, IPlugin plugin);

        IEnumerable<IUserSetting> GetAiailableSettings();
        object GetSettingValue(IUserSetting setting);
        void SetSettingValue(IUserSetting setting, object value);
        void SaveSettings(Stream output);
        void LoadSettings(Stream input);
    }
}
